Business object data structures (sometimes referred to simply as business objects) can be characterized as meta-objects that in turn describe a business entity (such as a sales order or a business partner), its sub-entities or business object nodes (such as a sales order item), a relationship among business objects and/or business object nodes, or operations (actions, queries) provided by the business entity. Business objects are advantageous in that they allow model driven development of business applications. With a model driven approach, a meta-object model contains all information required to generate a database model without further actions from the developer.
Many platforms utilize a generic interface for accessing business objects that is applicable for all business objects within a generic, central framework. With such platforms, when accessing a business object or when triggering one of its actions, a generic interface must be called that specifies the correct business object types and names. The correct business object types and names can be generated using a business object specific, generated interface that is specific to the business object (i.e., that includes the suitable types and constants).
As will be appreciated, the usage of a generic interface for all business objects always requires a compromise. With such scenarios, it is impossible to consider the special situation of each business object, for example the cardinality of actions and associations (i.e., whether the parameter of the specific business object a table or a structure, etc.). In addition, a generic interface hinders the usage of some features of the business object. For example, inline-definitions for output parameters are not possible with generic interfaces due to the generic typing of interface parameters. In addition, a generic interface hinders the usage of editor features like code-completion or static syntax checks due to the generic interface parameters. This limitation increases the likelihood of programming errors.
Furthermore, generic business object interfaces can only be used with accesses originating outside the relevant business object. Inside the implementation of the business object itself, other interfaces typically need to be used which are different than the outward facing generic interfaces.